package dbs

import (
	"github.com/jinzhu/gorm"
	"time"
)

type PatientLeave struct {
	Id          uint      `gorm:"column:id;type:int(11) unsigned;primary_key;AUTO_INCREMENT" json:"id"` // 编号
	Name        string    `gorm:"column:name;type:varchar(100)" json:"name"`                            // 患者姓名
	EffectiveB  time.Time `gorm:"column:effective_b;type:datetime" json:"effective_b"`                  // 入院时间
	EffectiveE  time.Time `gorm:"column:effective_e;type:datetime" json:"effective_e"`                  // 出院时间
	Gender      int       `gorm:"column:gender;type:tinyint(4)" json:"gender"`                          // 性别
	InpatientNo string    `gorm:"column:inpatient_no;type:varchar(255)" json:"inpatient_no"`            // 入院号
	Tag         string    `gorm:"column:tag;type:varchar(20)" json:"tag"`                               // 标记
	CreateAt    time.Time `gorm:"column:create_at;type:datetime" json:"create_at"`                      // 创建时间
}

type PatientLeaveCreate struct {
	Name        string    `gorm:"column:name;type:varchar(100)" json:"name"`                 // 患者姓名
	EffectiveB  time.Time `gorm:"column:effective_b;type:datetime" json:"effective_b"`       // 入院时间
	EffectiveE  time.Time `gorm:"column:effective_e;type:datetime" json:"effective_e"`       // 出院时间
	Gender      int       `gorm:"column:gender;type:tinyint(4)" json:"gender"`               // 性别
	InpatientNo string    `gorm:"column:inpatient_no;type:varchar(255)" json:"inpatient_no"` // 入院号
	Tag         string    `gorm:"column:tag;type:varchar(20)" json:"tag"`                    // 标记
	CreateAt    time.Time `gorm:"column:create_at;type:datetime" json:"create_at"`           // 创建时间
}

func (self *PatientLeaveCreate) Create() (err error) {
	err = D_Pool(func(db **gorm.DB) (err error) {
		conn := *db

		return conn.Table("patient_leaves").Create(&self).Error
	})
	return
}

func (self *PatientLeave) UpdateRaw(db *gorm.DB, params map[string]interface{}) (err error) {
	return db.Model(&self).Update(params).Error
}

func (self *PatientLeave) GetList() (data []PatientLeave, err error) {
	err = D_Pool(func(db **gorm.DB) (err error) {
		conn := *db
		return conn.Model(&self).Where("tag = '待处理' ").Limit(50).Order("effective_e ASC").Find(&data).Error
	})
	return
}
